package com.jt.controller;

import com.baomidou.mybatisplus.annotation.IdType;
import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.apache.ibatis.annotations.Delete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 刘昱江
 * 时间 2021/5/11
 */
@RestController
@CrossOrigin
@RequestMapping("/user")  /*公共部分*/
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/hello")
    public List<User> hello(){

        return userService.findAll();
    }

    @PostMapping("/login")
    public SysResult  login(@RequestBody User user){ /*前端传入的是一个json串
    后台服务器接收数据需要对数据进行解析, @RequestBody  可以把json数据转换为对象数据类型
    */
        System.out.println(user);
        String token =userService.login(user);
        if (token==null){
            return SysResult.fail();
        }
        return  SysResult .success(token);
    }


    /*业务;实现用户列表的分页查询
    * 类型 ;get
    * URl; /user/list
    * 参数; pageResult 对象进行接受  传递3个阐述
    * 返回值;sysresult 对象(pageresult对象)返回5个
    *
    * */

    @GetMapping("/list")
    public  SysResult  getUserList(PageResult pageResult){ /*用户传入是是三个参数*/
        pageResult=userService.getUserList(pageResult); /*重新给pageResult赋值,5个*/
        return  SysResult.success(pageResult);
    }

    /*修改状态*/
    @PutMapping("/status/{id}/{status}") /*restful风格 */
    public  SysResult updateStatus(User user){
        userService.updateStatus(user);
        return SysResult.success();
    }

    /**/
    @PostMapping("/addUser")
    public  SysResult  addUser(@RequestBody User user){
        userService.addUser(user);
        return SysResult.success();
    }

    @DeleteMapping("/{id}")
    @Transactional /*控制事务回滚,如果删除出现异常,回滚事务,取消数据库删除操作. */
    public  SysResult deleteUser(@PathVariable Integer id){
        userService.deleteUser(id);
        System.out.println("ok");
        return SysResult.success();
    }


    @GetMapping("/{id}")
    public  SysResult  updetUser(@PathVariable  Integer id){
       User  user= userService.updetbyid(id);
        System.out.println(user);
        return SysResult.success(user);
    }

    @PutMapping("/updateUser")
    public  SysResult  updateUser(@RequestBody User user){
        userService.updaUser(user);
        return  SysResult.success();

    }
}
